iT邦幫忙

2025 iThome 鐵人賽

DAY 16
0
自我挑戰組

THM30天挑戰:從菜鳥到小駭客系列 第 17

Day 17. Networking 7

  • 分享至 

  • xImage
  •  

今天來 Networking 系列最後一間房間

上一篇提到的 Wireshark 和 Tcpdump 這兩個工具都是被動監聽網路封包的工具
今天要說的 Nmap 則是提供主動偵測網路的工具
在搜尋和監測網路上面有很多種方法,最常聽到的 ping、arp-scan是屬於發現網路上的裝置
而之前提到過的 telnet 則是發現裝置上開放的服務
而今天要說的 Nmap 可以滿足以上找主機找服務這兩件事

room 7.Nmap: The Basics

用 Nmap 的好處:
- 同時進行主機發現與埠掃描
- 速度快
- 功能多樣
- OS偵測、版本偵測、腳本引擎(NSE)....
- 跨平台(Linux、Windows、macOS都可用)

主機發現

  • -sn (Ping Scan)
    • 用途:用來找出哪些主機「在線上」,但不會掃描 Port
    • 特點:雖然名字叫 ping,但 Nmap 不只用 ICMP echo(像 ping 指令那樣),還可能嘗試其他方法,例如:
      • ICMP Echo Request(傳統 ping)
      • ICMP Timestamp Request
      • TCP SYN 到常見 port(如 443、80)
      • ARP requests(在區域網路上更快更準確)

他比 ping 更靈活,就算 ICMP 被阻擋也可以靠 TCP/ARP 偵測到主機的存在

  • sudo(Substitute User Do,或Superuser Do)
    • 一般使用者(non-root)權限有限制只能做基本監測
    • Root 權限是最高權限,一般在指令最前方加入 sudo 即可使用,也可用 sudo su 進入 root 端,可以實現更多掃描技術,速度更快,也能繞過一些防火牆規則

指令示範

$ sudo nmap -sn 192.168.0.1-10 //掃描從192.168.0.1 到 192.168.0.10 的所有 IP 位址
$ sudo namp -sn 192.168.0.0/24 //掃描整個子網,相當於掃描 192.168.0.0 ~ 192.168.0.255
$ sudo nmap -sn example.thm //自動解析 example.thm 的 IP,然後對它進行掃描
/*-------多目標混合指定------*/
$ sudo nmap -sn 192.168.0.1,192.168.0.5,192.168.0.10 //以逗號分
$ sudo nmap -sn 192.168.0.1-10 example.com 10.0.0.0/24 //混合範例
/*-------補充-------*/
$ sudo nmap -sL 192.168.0.1/24 //列出要掃描的256個目標(僅列出目標不實計掃描)

掃描"本地"及"遠端"網路

掃描範圍 技術 優點 限制
本地網路 ARP 掃描 快、準確 只能用在同一個子網
遠端網路 ICMP、TCP SYN/ACK、UDP 掃描 可跨網段、跨網際網路 可能被防火牆擋掉,速度慢

本地網路掃描 -> 直接用 -sn(ARP)就夠快夠準
遠端網路掃描 -> 多用 ICMP/TCP/UDP 探測,必要時指定 port,例如 -PS80,443

連結埠掃描

在上面我們用 -sn 發現了活躍中的主機,現在我們要監聽這些主機上的網路服務

掃描TCP埠 (-sT)

  • 做法:完成 TCP 三次握手 (SYN → SYN/ACK → ACK)
  • 特點:
    • 成功 → 立即送 RST 斷開連線
    • 準確,但容易被偵測和記錄
  • 使用時機:非 root 使用者(因為 SYN 掃描需要 raw socket 權限)
$ nmap -sT 192.168.0.10

SYN 掃描 (-sS)

  • 做法:只送 SYN,若收到 SYN/ACK 表示開啟,接著回 RST 結束,不完成握手
  • 特點:
    • 較隱匿 (stealth),因為連線未完成,不一定會被服務端紀錄
    • 需要 root 權限
  • 使用時機:滲透測試、紅隊行動(偵測但降低日誌紀錄)
$ sudo nmap -sU 192.168.0.10

掃描UDP連接埠 (-sU)

  • 做法:發送 UDP 封包到目標端口
  • 特點:
    • 開啟:可能會有應答(例如 DNS port 53 會回覆)
    • 關閉:多數會回 ICMP Port Unreachable
    • 較慢,因為 UDP 沒有回應機制,需要額外重試與等待
  • 使用時機:找 UDP-based 服務(DNS, DHCP, NTP, SNMP, VoIP...)
$ sudo nmap -sU 192.168.0.10

限制/指定掃描範圍

  • 預設:掃描最常見的 1000 ports
  • -F → 快速模式,只掃前 100 個常見 ports
  • -p [range] → 指定範圍或所有 ports
$ nmap -F 192.168.0.10             # 快速掃描
$ nmap -p 20-100 192.168.0.10      # 掃描 20~100
$ nmap -p 22,80,443 192.168.0.10   # 掃描指定 ports
$ nmap -p- 192.168.0.10            # 掃描所有 65535 個 TCP port

版本監測

作業系統偵測

  • 原理:利用封包回應特徵(TCP/IP stack fingerprinting)推測 OS 例如 TTL、視窗大小、回應旗標等
  • 缺點:不是 100% 精準,結果通常是範圍或多個可能
$ nmap -sS -o <target>

服務與版本偵測

  • 原理:對開放的連接埠進行 banner grabbing,甚至送特殊探測封包
  • 結果:顯示服務名稱 (ex: ssh, http) 與可能的版本 (ex: OpenSSH 8.9p1)
$ nmap -sS -sV [target]

綜合偵測 (Aggressive Scan)

  • 包含:
    • OS 偵測 (-O)
    • 服務與版本偵測 (-sV)
    • traceroute
    • script 掃描(部分 NSE scripts)
  • 用途:快速蒐集目標資訊,滲透測試前期常用
$ nmap -sS -A [target]

強制掃描

  • 作用:忽略「主機是否存活檢測」,直接當作存活並掃描
  • 情境:目標阻擋 ICMP (ping) 或防火牆過濾存活探測時
$ nmap -sS -Pn [target]

掃描速度控制

Nmap 提供各種選項來控制掃描速度和時間

  1. 時間模板(Timing Templates)
    • 用法:-T0 ~ -T5 或 -T paranoid ~ -T insane
編號 名稱 特點 範例用途
0 偏執型 (Paranoid) 非常慢,每個 port 間長時間延遲 滲透測試隱蔽模式
1 鬼鬼祟祟 (Sneaky) 慢,每兩個 port 間延遲 15 秒 避免 IDS/IPS 偵測
2 禮貌型 (Polite) 速度中等,減少網路負載 適合共享網路環境
3 正常型 (Normal) 預設速度 一般掃描
4 攻擊型 (Aggressive) 快速掃描 本地網段或快速滲透測試
5 瘋狂型 (Insane) 極快,幾乎不考慮隱蔽 高速內網掃描

T0-T1 -> 隱蔽,慢速,適合躲 IDS
T2-T3 -> 平衡,適合一般網路
T4-T5 -> 高速,適合內網快速掃描

  1. 並行探測控制
  • 選項:
    • --min-parallelism [num] → 最少同時探測的 port 數量
    • --max-parallelism [num] → 最大同時探測的 port 數量
  • 作用:控制 Nmap 同時對多個 port 探測,提高效率或降低網路壓力

並行探測 -> 對網路壓力敏感時使用

  1. 掃描速率控制
  • 選項:
    • --min-rate [number] → 最小每秒資料包數
    • --max-rate [number] → 最大每秒資料包數
  • 作用:限制整個掃描的封包發送速率,避免觸發防火牆或 IDS

速率控制 -> 對網路壓力敏感時使用

  1. 主機超時控制
  • 選項:--host-timeout [time]
  • 作用:設定對單一主機願意等待的最長時間(適用於慢速網路或遠端目標)

host-timeout -> 適用慢速或遠端主機

指令範例

$ sudo nmap -sS -T1 --max-rate 50 192.168.0.10 //使用 T1 模板、限制速率為每秒 50 封包
$ sudo nmap -sS -F --max-parallelism 10 192.168.0.10 //快速掃描 100 個常見端口,並行探測數量最多 10
$ sudo nmap -sS -Pn --host-timeout 5m 192.168.0.10 //強制單主機掃描,超時設定5分鐘

輸出

詳細輸出與偵錯

  1. 詳細輸出(Verbose)
  • 指令:-v
  • 作用:在掃描過程中顯示更多即時資訊,例如:
    • ARP Ping 掃描
    • DNS 解析
    • SYN 掃描進度
  • 多層級:
    • -v → 基本詳細
    • -vv(-v2) → 更詳細
    • -vvv / -vvvv(-v4) → 超詳細
  • 也可按下 v 在掃描過程中提升詳情

實時觀察掃描進度:使用 -v,掃描時可看到每個階段的即時進度
範例:

$ sudo nmap -sS 192.168.139.1/24 -v
  1. 偵錯輸出(Debug)
  • 指令:-d
  • 作用:提供更底層的掃描封包和內部流程訊息
  • 多層級:
    • -d → 基本偵錯
    • -d2、-d3...最高 -d9 → 超高偵錯⚠️輸出可能成千上萬行
  • 使用情境:掃描無法完成或需要排錯時
$ sudo nmap -sS 192.168.139.1 -vv -d3

儲存掃描報告

選項 格式 說明
-oN <filename> Normal 可讀性人性化輸出
-oX <filename> XML 適合程式解析或自動化分析
-oG <filename> Grepable 適合用 grep / awk 處理
-oA <basename> All 同時輸出三種主要格式 (.nmap.xml.gnmap)
$ sudo nmap -sS 192.168.139.1 -oA gateway
# 產生三個檔案:
# gateway.nmap  -> 普通輸出
# gateway.xml   -> XML 輸出
# gateway.gnmap -> grep-able 輸出

輸出混合用

$ sudo nmap -sS 192.168.139.1/24 -v -oA network_scan //詳細輸出 + 儲存報告
$ sudo nmap -sS 192.168.139.1 -vv -d3 -oN debug_scan.nmap //偵錯 + 詳細輸出

工具總結

到現在已經說了三個網路分析工具了,現在來做一下簡單的對比

工具特點

https://ithelp.ithome.com.tw/upload/images/20250919/201582153gTrmljhBy.png

功能對比

功能 TCPdump Wireshark Nmap
封包捕獲
封包分析 基本 ✅ 詳細
掃描主機/端口
服務/版本偵測
作業系統偵測
命令列操作 部分支援
GUI操作
遠端操作 部分 ✅(透過 SSH 或 Nmap 輸出)
適合教學/實驗 ✅ CLI 基礎 ✅ GUI 詳細 ✅ 安全測試、掃描

使用情境

  1. TCPdump
  • 適合:伺服器上監控網路流量、捕獲封包進行快速分析
  • 優點:輕量、快速、可寫入檔案再分析
  • 缺點:CLI,需要懂協定
  1. Wireshark
  • 適合:深入協定分析、教學實驗、封包細節檢查
  • 優點:圖形化、協定解析全面
  • 缺點:GUI 重量大,不適合遠端 CLI
  1. Nmap
  • 適合:主機偵測、端口掃描、服務與版本分析、OS偵測
  • 優點:快速掃描、選項多、可自動化
  • 缺點:不做封包捕獲/分析,掃描可能被防火牆察覺

12:06了 可惡😱
跳戰失敗😭


上一篇
Day 16. Networking 6
系列文
THM30天挑戰:從菜鳥到小駭客17
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言